#include"RingQueue.hpp"
#include"Task.hpp"
#include <iostream>
#include <pthread.h>
#include <unistd.h>
#include <ctime>
using namespace std;
void* consumer(void* args)
{
    RingQueue<int>* rq = static_cast<RingQueue<int>*>(args);

    while(true)
    {
        sleep(1);

        //消费数据
        int data = 0;
        rq->Pop(&data);

        //处理数据
        cout<<"consumer->"<<data<<endl;
    }

}
void* productor(void* args)
{
    RingQueue<int>* rq = static_cast<RingQueue<int>*>(args);
    while(true)
    {
        //构造数据
        int data = rand()%10+1;
        //生产数据
        rq->Push(data);

    }
}
int main()
{
    srand(time(nullptr)^getpid());
    RingQueue<int>* rq = new RingQueue<int>(5);//让两个角色都可以看到这个资源
    pthread_t c,p;
    pthread_create(&c,nullptr,consumer,rq);//创建线程
    pthread_create(&p,nullptr,productor,rq);

    pthread_join(c,nullptr);
    pthread_join(p,nullptr);
}
